package websocket

import "time"

type FrameType uint8

const (
	FrameData      FrameType = 0x0
	FramePing      FrameType = 0x1
	FrameAck       FrameType = 0x2
	FrameNoAck     FrameType = 0x3
	FrameTransport FrameType = 0x6
	FrameErr       FrameType = 0x9
)

type Message struct {
	FrameType `json:"frame_type"`
	Id        string      `json:"Id,omitempty"`
	Method    string      `json:"method,omitempty"`
	AckSeq    int         `json:"ackSeq,omitempty"`
	AckTime   time.Time   `json:"ackTime,omitempty"`
	ErrCount  int         `json:"errCount,omitempty"`
	FromId    string      `json:"fromId,omitempty"`
	UserId    string      `json:"userId,omitempty"`
	Data      interface{} `json:"data,omitempty"`
}

func NewMessage(fid string, data interface{}) *Message {
	return &Message{
		FrameType: FrameData,
		FromId:    fid,
		Data:      data,
	}
}

func NewErrMessage(err error) *Message {
	m := &Message{
		FrameType: FrameErr,
		Data:      err.Error(),
	}
	return m
}
